package genreate;

import java.util.ArrayList;
import java.util.Collections;

/**
 * Created by 5406160@qq.com on LiBoWen 李博闻.
 *
 * @ClassName : GenerateDemo
 * @Author : 54061
 * @Date: 2022/2/11 18:40
 */
/*
    Object > Number > Integer

    需求: 定义一个方法 此方法可以接收
        ArrayList<Object>
        ArrayList<Number>
        ArrayList<Integer>
        此三个类型的集合对象
        请问 : 方法的形参该如何编写

     泛型的通配符 : ? (?代表可以接收任意的引用数据类型)

     泛型的上下限:
        ? extends 类名 : 泛型的上限
        ? super 类名 : 泛型的下限
        注意: 不管是上限还是下限 都是包含extends/super 后面的类型

     不管是通配符还是上下限 都是用在方法的形参上的!!!

        static <T> boolean addAll(Collection<? super T> c, T... elements)
            T... elements: 集合中元素 --> 集合中的元素类型是T
            Collection<? super T> c : 装元素的集合

        static <T> void sort(List<T> list, Comparator<? super T> c)

        static <T extends Comparable<? super T>> void sort(List<T> list)



 */
public class GenerateDemo {
    public static void main(String[] args) {
        ArrayList<Object> list1 = new ArrayList<>();
        ArrayList<Number> list2 = new ArrayList<>();
        ArrayList<Integer> list3 = new ArrayList<>();


        show(list1);
        show(list2);
        show(list3);



        method(list1);
        method(list2);
        //method(list3);

        ArrayList<Person> people = new ArrayList<>();
        Collections.sort(people);



    }
    public static <T> void show(ArrayList<T> list){

    }
    public static void method(ArrayList<? super Number>list){

    }
}
